#!/usr/bin/env node

/**
 * 模板数据初始化脚本
 * 使用方法: node scripts/init-templates.js [options]
 */

const { initTemplateData, exportTemplateData } = require('../dist/utils/initTemplateData');
const path = require('path');

// 解析命令行参数
function parseArgs() {
  const args = process.argv.slice(2);
  const options = {
    clearExisting: false,
    skipValidation: false,
    export: false,
    help: false
  };
  
  args.forEach(arg => {
    switch (arg) {
      case '--clear':
      case '-c':
        options.clearExisting = true;
        break;
      case '--skip-validation':
      case '-s':
        options.skipValidation = true;
        break;
      case '--export':
      case '-e':
        options.export = true;
        break;
      case '--help':
      case '-h':
        options.help = true;
        break;
    }
  });
  
  return options;
}

// 显示帮助信息
function showHelp() {
  console.log(`
模板数据初始化脚本

使用方法:
  node scripts/init-templates.js [options]

选项:
  -c, --clear           清空现有数据后重新导入
  -s, --skip-validation 跳过数据验证
  -e, --export          导出当前数据库中的模板数据
  -h, --help            显示帮助信息

示例:
  node scripts/init-templates.js                # 导入数据（跳过已存在的）
  node scripts/init-templates.js --clear        # 清空后重新导入
  node scripts/init-templates.js --export       # 导出数据
`);
}

// 主函数
async function main() {
  const options = parseArgs();
  
  if (options.help) {
    showHelp();
    return;
  }
  
  console.log('🚀 SD模板数据管理工具\n');
  
  try {
    if (options.export) {
      // 导出数据
      console.log('📤 开始导出模板数据...');
      const result = await exportTemplateData();
      
      if (result.success) {
        console.log(`✅ 导出成功！`);
        console.log(`   文件路径: ${result.filePath}`);
        console.log(`   导出数量: ${result.exported} 个模板`);
      } else {
        console.error(`❌ 导出失败: ${result.error}`);
        process.exit(1);
      }
    } else {
      // 导入数据
      console.log('📥 开始初始化模板数据...');
      
      if (options.clearExisting) {
        console.log('⚠️  将清空现有数据');
      }
      
      if (options.skipValidation) {
        console.log('⚠️  将跳过数据验证');
      }
      
      const result = await initTemplateData({
        clearExisting: options.clearExisting,
        skipValidation: options.skipValidation
      });
      
      console.log('\n📊 初始化结果:');
      console.log(`   导入: ${result.imported} 个`);
      console.log(`   跳过: ${result.skipped} 个`);
      console.log(`   错误: ${result.errors.length} 个`);
      
      if (result.errors.length > 0) {
        console.log('\n❌ 错误详情:');
        result.errors.forEach(error => {
          console.log(`   - ${error}`);
        });
      }
      
      if (result.success) {
        console.log('\n✅ 数据初始化完成！');
      } else {
        console.log('\n⚠️  数据初始化完成，但存在错误');
        process.exit(1);
      }
    }
    
  } catch (error) {
    console.error(`\n❌ 执行失败: ${error.message}`);
    console.error(error.stack);
    process.exit(1);
  }
}

// 运行脚本
if (require.main === module) {
  main();
}

module.exports = { main };